package main

import (
	"log"
	"net/http"
	"sync"
)

// 获得一个秒杀商品
// 预存数量
//预存商品数量
var productNum int64 = 1000000

var sum int64=0
// 互斥锁
var mutex sync.Mutex

// 商品计数
var count int64 = 0

// 获取秒杀商品
func GetOneProduct() bool {
	// 获取步骤，互斥操作
	mutex.Lock()
	defer mutex.Unlock()

	count +=1
	if count%100 == 0 {
		// 每100做一次超限判断
		if sum < productNum {
			sum += 1
			return true
		}
	}
	return false
}

func GetProduct(w http.ResponseWriter, req *http.Request) {
	if GetOneProduct() {
		// success
		w.Write([]byte("get one product success"))
		return 
	}
	w.Write([]byte("get failure"))
	return 
}

func main(){
	// 注册controller
	http.HandleFunc("/getOne",GetProduct)
	// 8084端口 数量验证
	err := http.ListenAndServe("8084",nil)
	if err!=nil {
		log.Fatal("Err:",err)
	}
	
}